From: Jason Rumney Date: Sun, 15 Mar 2009 14:53:53 +0000 (+0000) Subject: * w32term.h (WM_EMACS_PAINT): New message. X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1~1^2~421^2~1230 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=df4b0422e1bb7ae074b19d22b987408381133a45;p=emacs.git * w32term.h (WM_EMACS_PAINT): New message. * w32term.c (w32_read_socket): Use it instead of WM_PAINT. * w32fns.c (w32_wnd_proc): Change WM_PAINT to WM_EMACS_PAINT before passing to lisp thread. (Bug#950) --- diff --git a/src/ChangeLog b/src/ChangeLog index 24faded78fa..6787d035682 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2009-03-15 Jason Rumney + + * w32term.h (WM_EMACS_PAINT): New message. + * w32term.c (w32_read_socket): Use it instead of WM_PAINT. + * w32fns.c (w32_wnd_proc): Change WM_PAINT to WM_EMACS_PAINT + before passing to lisp thread. (Bug#950) + 2009-03-14 David Reitter * nsterm.m (ns_shutdown_properly, -terminate): Remove global state diff --git a/src/w32fns.c b/src/w32fns.c index 97b9adea2ce..bf261a754de 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -2841,7 +2841,12 @@ w32_wnd_proc (hwnd, msg, wParam, lParam) EndPaint (hwnd, &paintStruct); leave_crit (); - my_post_msg (&wmsg, hwnd, msg, wParam, lParam); + /* Change the message type to prevent Windows from + combining WM_PAINT messages in the Lisp thread's queue, + since Windows assumes that each message queue is + dedicated to one frame and does not bother checking + that hwnd matches before combining them. */ + my_post_msg (&wmsg, hwnd, WM_EMACS_PAINT, wParam, lParam); return 0; } diff --git a/src/w32term.c b/src/w32term.c index 34fc450217f..e16f07f088c 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -4105,7 +4105,7 @@ w32_read_socket (sd, expected, hold_quit) switch (msg.msg.message) { - case WM_PAINT: + case WM_EMACS_PAINT: f = x_window_to_frame (dpyinfo, msg.msg.hwnd); if (f) diff --git a/src/w32term.h b/src/w32term.h index a40cf460665..8181d610cde 100644 --- a/src/w32term.h +++ b/src/w32term.h @@ -609,7 +609,8 @@ do { \ #define WM_EMACS_SHOW_CARET (WM_EMACS_START + 17) #define WM_EMACS_HIDE_CARET (WM_EMACS_START + 18) #define WM_EMACS_SETCURSOR (WM_EMACS_START + 19) -#define WM_EMACS_END (WM_EMACS_START + 20) +#define WM_EMACS_PAINT (WM_EMACS_START + 20) +#define WM_EMACS_END (WM_EMACS_START + 21) #define WND_FONTWIDTH_INDEX (0) #define WND_LINEHEIGHT_INDEX (4)